package com.rbac.dao;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Component;
import com.rbac.common.BaseDaoSupport;
import com.rbac.entity.SysAccount;
import com.rbac.entity.SysAccountRole;
import com.rbac.util.CommonUtils;
@Component("accountDao")
public class AccountDao extends BaseDaoSupport {
/**
* 根据用户登录名和用户显示名查找用户列表
* @param username
* @param realname
* @return
*/
public List<SysAccount> getSysAccountList(String username, String realname){
Criteria crit = super.getSession().createCriteria(SysAccount.class);
crit.add(Restrictions.eq("isDeleted", 0));
if(CommonUtils.isNotEmpty(username)){
crit.add(Restrictions.ilike("username", username, MatchMode.ANYWHERE));
}
if(CommonUtils.isNotEmpty(realname)){
crit.add(Restrictions.ilike("realname", realname, MatchMode.ANYWHERE));
}
return crit.list();
}
/**
* 根据用户名查找用户,精确匹配,忽略传入的用户id对应的用户
* @param username
* @param ignoreAccountId
* @return
*/
public List<SysAccount> getSysAccountListByExactUsername(String username, Long ignoreAccountId){
Criteria crit = super.getSession().createCriteria(SysAccount.class);
crit.add(Restrictions.eq("isDeleted", 0));
if(CommonUtils.isNotEmpty(username)){
crit.add(Restrictions.eq("username", username));
}
if(ignoreAccountId!=null){
crit.add(Restrictions.ne("id", ignoreAccountId));
}
return crit.list();
}
/**
* 根据用户id查找用户关联角色列表
* @param accountId
* @return
*/
public List<SysAccountRole> getSysAccountRoleByAccountId(Long accountId){
Criteria crit = super.getSession().createCriteria(SysAccountRole.class);
crit.add(Restrictions.eq("isDeleted", 0));
if(accountId!=null){
crit.add(Restrictions.eq("sysAccount", super.findById(SysAccount.class, accountId)));
}
else{
return new ArrayList<SysAccountRole>();
}
return crit.list();
}
}